Markup Languages have attained wide popularity in recent years. One type of markup language, Extensible Markup Language (XML), is a universal language that provides a way to identify, exchange, and process various kinds of data. For example, XML is used to create documents that can be utilized by a variety of application programs. Elements of an XML file have an associated namespace and schema.
In XML, a namespace is commonly used to uniquely identify each XML document. Each XML document can use a namespace to allow processes to easily identify the type of XML associated with the document. The unique namespaces may also assist to differentiate markup elements that come from different sources and happen to have the same name.
XML Schemata provide a way to describe and validate data in an XML environment. A schema states what elements and attributes are used to describe content in an XML document, where each element is allowed, and which element can appear within other elements. The use of schemata ensures that the file is structured the same way. Schemata may be created by a user and generally supported by an associated markup language, such as XML. By using an XML editor that supports schema, the user can manipulate the XML file and generate XML documents that adhere to the schema the user has created.
XML documents may be created to adhere to one or more schemata. However, conventional mechanisms for validating elements within an XML document against more than one schema fall short of acceptable in certain situations.
If elements associated with a first schema are nested within elements of a second schema, any children of the nested elements cannot be validated against the first schema, unless both schemata are structured in such a way to account for each other. In other words, existing validation mechanisms can only validate an element and its children against a schema, but not its grandchildren directly. Often, the parent is the only one that can set the rules of it's children. If the child element is in a different schema, then the child element's schema must reference the parent's schema if the desire is to insert a grandchild in the parent's schema. There was no way to just originally say that the child's schema was transparent, and allow the parent to define what it's grandchild could be. Until now, this limitation has posed a problem for developers of markup language tools.